package org.warm.meaning.x.base.ress.core.domain.entity;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;

/**
 * 资源应用页面菜单
 *
 * @author WarmMeaning
 * @date 2024-06-09
 * ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
 * @modify WarmMeaning | 2024-06-09 |
 */
@Data
@Accessors(chain = true)
@TableName(value = "res_app_page_menu")
public class ResAppPageMenuEntity {

    /**
     * 主键ID
     */
    @TableId
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long id;

    /**
     * 唯一标识编号
     */
    private String code;

    /**
     * 名称
     */
    private String name;

    /**
     * 资源应用唯一标识编号
     */
    private String appCode;

    /**
     * 资源应用页面唯一标识编号
     */
    private String pageCode;

    /**
     * 父级唯一标识编号
     */
    private String parentCode;

    /**
     * 父级名称
     */
    private String parentName;

    /**
     * 编码tree,子级需要将父级的编码作为前缀,便于级联查找,逗号分割
     */
    private String upTreeCode;

    /**
     * 菜单类别;groupedCatalog:分组目录,menuCatalog:菜单目录,menuNode:菜单节点
     */
    private String classify;

    /**
     * 菜单级别;0:顶级、1:一级、2:二级、3:三级、4:四级、5:五级...
     */
    private String grade;

    /**
     * 目标页
     */
    private String targetPageCode;

    /**
     * 资源编号;app_code:page_code:code
     */
    private String resCode;

    /**
     * 图标
     */
    private String icon;

    /**
     * 排序
     */
    private Integer sort;

    /**
     * 创建管理员编号
     */
    private String createAdminCode;

    /**
     * 更新管理员编号
     */
    private String updateAdminCode;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(style = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(style = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

}
